package com.etc.demo;

/**
 * @author: knowno
 * @create: 2024-09-05 13:43
 * @Version 1.0
 **/
public class TestConstructor {
    public static void main(String[] args) {
        new Person();//这里创建Person对象，会不会调用Person类的构造方法?

        Animal animal1 = new Animal("猫科", "小白", 1);
        Animal animal2 = new Animal("猫科", "黑", 2);
    }
}

class Person{
    //一个类，如果没有显式声明其构造方法，实际上也会存在一个默认的无参数构造方法，这个构造的访问修饰符和类修饰符相同


//    Person() {
//    }
}

/**
 * 实体类中，常规的做法就是一个无参数的构造+带参数的构造,带参数的构造主要是为了初始化属性值
 */
class  Animal{
    String type;
    String name;
    int age;


    public Animal() {
        System.out.println("无参数的构造");
    }


    /**
     * this 代指当前类对象
     * @param type
     * @param name
     * @param age
     */
    public Animal(String type, String name, int age) {
        this.type = type;
        this.name = name;
        this.age = age;
        System.out.println("带参数的构造");
    }
}